﻿//
//
//
//#include"Date.h"
//
//
//bool Date::CheckDate() const
//{
//	if (_month < 1 || _month > 12
//		|| _day < 1 || _day > GetMonthDay(_year, _month))
//	{
//		return false;
//	}
//	else
//	{
//		return true;
//	}
//}
//
//
//	// 全缺省的构造函数
////缺省值不能声明定义同时给，声明给即可
//	Date::Date(int year, int month, int day) {
//		_year = year;
//		_month = month;
//		_day = day;
//		if (!CheckDate())
//		{
//			cout << "非法日期:";
//			Print();
//		}
//	}
//
//
//
//	// 拷贝构造函数
//
//  // d2(d1)
//
//	//Date::Date(const Date& d) {
//	//	_year = d._year;
//	//	_month = d._month;
//	//	_day = d._day;
//	//	if (!CheckDate())
//	//	{
//	//		cout << "非法日期:";
//	//		Print();
//	//	}
//	//}
//
//
//
//	// 赋值运算符重载
//
//  // d2 = d3 -> d2.operator=(&d2, d3)
//
//	//Date& Date::operator=(const Date& d) {
//	//	_year = d._year;
//	//	_month = d._month;
//	//	_day = d._day;
//	//	return *this;
//	//}
//
//
//
//	// 析构函数
//
//	//~Date();
//
//
//
//	// 日期+=天数
//
//	Date& Date::operator+=(int day) {
//		if (day < 0) {
//			return *this -= -day;
//		}
//		_day += day;
//		while (_day > GetMonthDay(_year, _month)) {
//			_day -= GetMonthDay(_year, _month);
//			++_month;
//
//			if (_month == 13)
//			{
//				++_year;
//				_month = 1;
//			}
//		}
//		return *this;
//	}
//
//
//
//	// 日期+天数
//
//	Date Date::operator+(int day) const{
//		Date tmp = *this;
//		tmp += day;
//		return tmp;
//	}
//
//
//
//	// 日期-天数
//
//	Date Date :: operator-(int day)const {
//		Date tmp = *this;
//		tmp -= day;
//		return tmp;
//	}
//
//
//
//	// 日期-=天数
//
//	Date& Date::operator-=(int day){
//		if (day < 0) {
//			return *this += (-day);
//		}
//		_day -= day;
//		while (_day <= 0) {
//			--_month;
//			if (_month == 0) {
//				_month = 12;
//				--_year;
//			}
//			_day += GetMonthDay(_year, _month);
//			
//
//		}
//		return *this;
//	}
//
//
//
//	// 前置++
//
//	Date& Date::operator++() {
//		*this += 1;
//		return *this;
//	}
//
//
//
//	// 后置++
//
//	Date Date::operator++(int) {
//		Date tmp = *this;
//		*this += 1;
//		return tmp;
//	}
//
//
//
//	// 后置--
//
//	Date Date::operator--(int) {
//		Date tmp = *this;
//		*this -= 1;
//		return tmp;
//	}
//
//
//
//	// 前置--
//
//	Date& Date::operator--() {
//		*this -= 1;
//		return *this;
//	}
//
//
//
//	// >运算符重载
//
//	bool Date::operator>(const Date& d)const {
//		if (_year < d._year)return false;
//		if (_month < d._month)return false;
//		if (_day < d._day)return false;
//		return true;
//	}
//
//
//
//	// ==运算符重载
//
//	bool Date::operator==(const Date& d)const {
//		if (_year == d._year && _month == d._month && _day == d._day)return true;
//		return false;
//	}
//
//
//
//	// >=运算符重载
//
//	bool Date::operator >= (const Date& d)const {
//		if ((*this == d) || (*this > d))return true;
//		return false;
//	}
//
//
//
//	// <运算符重载
//
//	bool Date::operator < (const Date& d)const {
//		if (!(*this >= d))return true;
//		return false;
//	}
//
//
//
//	// <=运算符重载
//
//	bool Date::operator <= (const Date& d)const {
//		if ((*this == d) || (*this < d))return true;
//		return false;
//	}
//
//
//
//	// !=运算符重载
//
//	bool Date::operator != (const Date& d)const {
//		if (!(*this == d))return true;
//		return false;
//	}
//
//
//
//	// 日期-日期 返回天数
//
//	int Date::operator-(const Date& d)const {
//		Date max = *this;
//		Date min = d;
//		int flag = 1;
//		if (*this < d) {
//			max = d;
//			min = *this;
//			flag = -1;
//		}
//		int n = 0;
//		while (min != max) {
//			++min;
//			++n;
//		}
//		return n * flag;
//	}
//	void Date::Print()const {
//		cout << _year << "/" << _month << "/" << _day << endl;
//	}
//
//
//
//void TestDate1()
//{
//	// 这⾥需要测试⼀下⼤的数据+和-
//	Date d1(2024, 4, 14);
//	Date d2 = d1 + 30000;
//	d1.Print();
//	d2.Print();
//
//	Date d3(2024, 4, 14);
//	Date d4 = d3 - 5000;
//	d3.Print();
//	d4.Print();
//
//	Date d5(2024, 4, 14);
//	d5 += -5000;
//	d5.Print();
//}
//
//
//ostream& operator<<(ostream& out, const Date& d) {
//	out << d._year << "/" << d._month << "/" << d._day << endl;
//	return out;
//
//}
//istream& operator>>(istream& in, Date& d) {
//	in >> d._year >> d._month >>d._day ;
//	return in;
//}
//
//
//
//
//void TestDate2()
//{
//    Date d1(2024, 4, 14);
//   Date d2 = ++d1;
//    d1.Print();
//    d2.Print();
//   
//   	 Date d3 = d1++;
//    d1.Print();
//    d3.Print();
//   
//   	 /*d1.operator++(1);
//   	 d1.operator++(100);
//   	 d1.operator++(0);
//   	 d1.Print();*/
//   	 }
//
//void TestDate3()
//{
//    Date d1(2024, 4, 14);
//    Date d2(2034, 4, 14);
//   
//   	 int n = d1 - d2;
//    cout << n << endl;
//   
//   	n = d2 - d1;
//    }
//
//void TestDate4()
//{
//    Date d1(2024, 4, 14);
//    Date d2 = d1 + 30000;
//   
//   	 // operator<<(cout, d1)
//   	 cout << d1;
//    cout << d2;
//   
//   cin >> d1 >> d2;
//    cout << d1 << d2;
//    }
//
//void TestDate5()
//{
//   const Date d1(2024, 4, 14);
//    d1.Print();
//   
//   	 //d1 += 100;
//   	 d1 + 100;
//   
//   	 Date d2(2024, 4, 25);
//    d2.Print();
//   
//   	 d2 += 100;
//
//   	 d1 < d2;
//d2 < d1;
//    }
//
//
//
//
//int main() {
//	TestDate1();
//	TestDate2();
//	TestDate3();
//	TestDate4();
//	TestDate5();
//	return 0;
//}
//
//
//
//
//
//
//
//
//
//
//
//
//
//
